Knowledge management in enterprise software systems may include integrating frameworks that provide a bridge for a variety of application programs to access various data sources by using common services, e.g., search, text mining, data mining, and learning capabilities. Such a bridge, however, does not avoid the need to provide different application programs with flexible access to data in various formats and from various sources. For example, an enterprise software system already defines tens of thousands of data objects in various formats, and the number of defined objects continues to grow. Not only does this make maintaining full data accessibility challenging, it also places a significant burden on human experts and knowledge managers who must design and support the knowledge bases in enterprise systems. The growing complexity of these systems, and the scarcity of human resources to support them, imposes a high cost that significantly impairs the potential utility of knowledge bases.
In a knowledge base, data objects are organized to provide application programs with efficient access to information. To access (read from or write to) a knowledge base, an application program must typically communicate through an application programming interface (API) specific to that knowledge base. In effect, the API supplies the application program with metadata (format, data type, etc.) needed to reach the contents of the knowledge base. The API may comprise software code. For a human operator to generate an API that enables any application program in an enterprise system to access all available data objects normally requires the operator to possess in-depth understanding and knowledge about the data sources, and to expend considerable time and effort building and testing the API.
Moreover, generating a desired knowledge base from pre-existing data sources further burdens human experts and knowledge managers. In an enterprise system, experts who have in-depth knowledge about specific business objects can manually create a desired knowledge base from pre-existing knowledge bases. However, use of experts to manually create custom knowledge bases typically involves considerable time and expense. These burdens on limited expert resources limit a user's ability to create customized knowledge bases as needed.